/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package agen.util.graficos;

import agen.AGenApp;
import agen.mutacion.Mutacion;
import agen.optimalidad.Aptitud;
import agen.optimalidad.Optimo;
import org.jfree.data.general.Dataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

/**
 *
 * @author juan
 */
public class ArmarDataSets {

public static XYSeriesCollection armarDataSetAptitudesResumen(double[][] historialAptitudes,
        int generaciones){
    XYSeriesCollection data = new XYSeriesCollection();
    XYSeries mediaAptitudes = new XYSeries("Media Aptitudes", false);
    XYSeries peorAptitud = new XYSeries("Peor Aptitud", false);
    XYSeries mejorAptitud = new XYSeries("Mejor Aptitud", false);
    
    for (int gen = 0; gen < generaciones ; gen++) {
        double[] ha = historialAptitudes[gen];
        mediaAptitudes.add(gen, Aptitud.getPromedioAptitudes(gen));
        peorAptitud.add(gen, ha[AGenApp.poblacionInicial - 1]);
        mejorAptitud.add(gen, ha[0]);
    }
    data.addSeries(peorAptitud);
    data.addSeries(mejorAptitud);
    data.addSeries(mediaAptitudes);
    return data;
}
public static XYSeriesCollection armarDataSetAptitudes(int generacion,
        double[] aptitudes){
    XYSeriesCollection data = new XYSeriesCollection();
    XYSeries mediaAptitudes = new XYSeries("Media Aptitudes", false);
    XYSeries masconvergencia = new XYSeries("+Desvio", false);
    XYSeries menosconvergencia = new XYSeries("-Desvio", false);
    XYSeries aptitud = new XYSeries("Aptitudes", false);
    double mediaAp = Aptitud.getPromedioAptitudes(generacion);
    double conv = Mutacion.calcularConvergenciaAptitudes(aptitudes, generacion);
    for (int i = 0; i < aptitudes.length; i++) {
        aptitud.add(i, aptitudes[i]);
        mediaAptitudes.add(i,mediaAp);
        masconvergencia.add(i,mediaAp + conv);
        menosconvergencia.add(i,mediaAp - conv);
    }
    data.addSeries(aptitud);
    data.addSeries(masconvergencia);
    data.addSeries(menosconvergencia);
    data.addSeries(mediaAptitudes);
    return data;
}
}
